<?php
/**
 * Classe HackInPain_Navigation_Model
 * Permet de dechiffrer le parametrage du menu
 * @author François Guégnaud
 *
 */
class HackInPain_Navigation_Model extends HackInPain_Singleton_Abstract {
	
	protected $_items = array(); // tableau contenant l'ensemble des items du menu
	
	/**
	 * Setter de la propriete items
	 * @param array $items
	 */
	public function setItems(array $items) {
		$this->_items = $items;
	}
	
	/**
	 * Getter de la propriete items
	 * @return array $this->_items
	 */
	public function getItems() {
		return $this->_items;
	}
	
	/**
	 * Ajoute l'item de navigation au menu
	 * @param HackInPain_Navigation_Item_Model $item
	 */
	public function addItem(HackInPain_Navigation_Item_Model $item) {
		array_push($this->_items, $item);
	}
	
	/**
	 * Cherche un item en utilisant son id. Le parametre est soit :
	 * 	- un objet item dont l'id est renseigne
	 * 	- une chaine contenant l'id a rechercher
	 * @param mixte $item
	 * @return HackInPain_Navigation_Item_Model
	 */
	public function getItem($item) {
		if(is_object($item) && get_class($item) == 'HackInPain_Navigation_Item_Model') {
			$id = $item->__get('id');
		} elseif (is_string($item)) {
			$id = $item;
		} else {
			echo "L'item $item pour le menu ne correspond pas a une valeur attendue";
		}
		
		// boucle de recherche
		foreach($this->_items as $oneItem) {
			if($oneItem->__get('id') == $id) { // si l'objet est trouve
				return $oneItem;
				break; // sort de la boucle de recherche
			}
		}
	}
	
	/**
	 * Selectionne un item du menu
	 * @param mixte $item
	 */
	public function selectItem($item) {
		$SingletonItem = $this->getItem($item);
		$SingletonItem->selected();
	}
}